using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/**
 * 子弹类
 */
public class Bullect : MonoBehaviour
{

    public float moveSpeed = 10;

    //是玩家  true 还是敌人子弹 false
    public bool isPlayerBullect;


    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //自身方向  *  速度 * 时间
        transform.Translate(transform.up * moveSpeed * Time.deltaTime, Space.World);
    }



    // private void OnTriggerEnter2D(Collider2D collision)
    // {

    //     switch (collision.tag)
    //     {
    //         //坦克 
    //         case "Tank":
    //             if (!isPlayerBullect)
    //             {
    //                 //玩家死亡
    //                 collision.SendMessage("Die");
    //                 //销毁自身
    //                 Destroy(gameObject);
    //             }

    //             break;
    //         //老窝
    //         case "Heart":
    //             collision.SendMessage("Die");
    //              //销毁自身
    //                 Destroy(gameObject);
    //             break;
    //         //敌人
    //         case "Enemy":
    //             if (isPlayerBullect)
    //             {
    //                 // 假设我们想让碰撞体所属的游戏对象执行Die方法
    //                 collision.gameObject.SendMessage("Die", SendMessageOptions.DontRequireReceiver);
    //                 // collision.SendMessage("Die");
    //                 //销毁自身
    //                 Destroy(gameObject);
    //             }

    //             break;
    //         //墙
    //         case "Wall":
    //             //销毁墙
    //             Destroy(collision.gameObject);
    //             //销毁自身
    //             Destroy(gameObject);
    //             break;
    //         //障碍
    //         case "Barrier":
    //             //销毁自身
    //             Destroy(gameObject);
    //             break;
    //         default:
    //             break;
    //     }
    // }

    // 当有其他带有碰撞体的游戏对象进入触发器区域时，此方法会被调用
    private void OnTriggerEnter2D(Collider2D collision)
    {
        // 根据碰撞体的标签来决定如何处理碰撞
        switch (collision.tag)
        {
            // 如果碰撞体标签为 "Tank"
            case "Tank":
                // 处理与坦克的碰撞
                HandleTankCollision(collision);
                break;

            // 如果碰撞体标签为 "Heart"  基地
            case "Heart":
                // 处理与基地的碰撞
                HandleHeartCollision(collision);
                break;

            // 如果碰撞体标签为 "Enemy"
            case "Enemy":
                // 处理与敌人的碰撞
                HandleEnemyCollision(collision);
                break;

            // 如果碰撞体标签为 "Wall"
            case "Wall":
                // 处理与墙壁的碰撞
                HandleWallCollision(collision);
                break;

            // 如果碰撞体标签为 "Barrier"（可能是障碍物）
            case "Barrier":
                // 处理与障碍物的碰撞
                HandleBarrierCollision();
                break;

            // 默认情况，不做任何处理
            default:
                break;
        }
    }

    // 处理与坦克的碰撞
    private void HandleTankCollision(Collider2D collision)
    {
        // 如果当前子弹不是玩家子弹，则处理与坦克的碰撞
        if (!isPlayerBullect)
        {
            // 调用碰撞体所属的游戏对象的 "Die" 方法（假设该方法存在）
            // SendMessageOptions.DontRequireReceiver 确保即使目标没有 "Die" 方法也不会抛出异常
            collision.gameObject.SendMessage("Die", SendMessageOptions.DontRequireReceiver);
            // 销毁子弹游戏对象
            Destroy(gameObject);
        }
    }

    // 处理与基地的碰撞
    private void HandleHeartCollision(Collider2D collision)
    {
        // 调用碰撞体所属的游戏对象的 "Die" 方法
        collision.gameObject.SendMessage("Die", SendMessageOptions.DontRequireReceiver);
        // 销毁子弹游戏对象
        Destroy(gameObject);
    }

    // 处理与敌人的碰撞
    private void HandleEnemyCollision(Collider2D collision)
    {
        // 如果当前子弹是玩家子弹，则处理与敌人的碰撞
        if (isPlayerBullect)
        {


            // 调用碰撞体所属的游戏对象的 "Die" 方法
            collision.gameObject.SendMessage("Die", SendMessageOptions.DontRequireReceiver);
            // 销毁子弹游戏对象
            Destroy(gameObject);

            MapCreation.enemySurplus--;
            Debug.Log("剩余敌人数量: " + MapCreation.enemySurplus);
            if (MapCreation.enemySurplus == 0)
            {
                //游戏结束
                PlayerMananger.Instance.isDefeat=true;
            }
        }
    }

    // 处理与墙壁的碰撞
    private void HandleWallCollision(Collider2D collision)
    {
        // 销毁墙壁游戏对象
        Destroy(collision.gameObject);
        // 销毁子弹游戏对象
        Destroy(gameObject);
    }

    // 处理与障碍物的碰撞
    private void HandleBarrierCollision()
    {
        // 销毁子弹游戏对象
        Destroy(gameObject);
    }
}
